﻿Imports VendasDAL
Imports VendasBLL
Public Class OSRelFRM
    Dim Codigo As Integer
    Sub Inicio()
        GBPeriodo.Enabled = False
        GBLocalizar.Enabled = False
        BTNOk.Visible = False
        BTNPeriodo.Visible = False
    End Sub

    Private Sub OSRelFRM_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Inicio()
    End Sub

    Private Sub RBCliente_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RBCliente.CheckedChanged
        If (RBCliente.Checked) Then
            Dim obj As New ConsultaClientesFRM
            obj.tipo = "ret"
            obj.ShowDialog()
            If (Not IsNothing(obj.ObjC)) Then
                Dim ObjCli As New ClientesBLL
                ObjCli = obj.ObjC
                TXTDescricao.Text = ObjCli.Nome
                Codigo = ObjCli.Codigo
                GBLocalizar.Text = "Ordem de Serviço por Cliente"
                'TXTTitulo.Text = "Cliente:"
                ObjCli = Nothing
            Else
                Inicio()
            End If
            GBPeriodo.Enabled = True
            GBLocalizar.Enabled = True
            BTNPeriodo.Visible = False
            BTNOk.Visible = True
            obj = Nothing
        End If
    End Sub

    Private Sub RBFuncionario_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RBFuncionario.CheckedChanged
        If (RBFuncionario.Checked) Then
            Dim obj As New ConsultaFuncionariosFRM
            obj.tipo = "ret"
            obj.ShowDialog()
            If (Not IsNothing(obj.ObjFun)) Then
                Dim ObjF As New FuncionarioBLL
                ObjF = obj.ObjFun
                TXTDescricao.Text = ObjF.Nome
                Codigo = ObjF.Codigo
                GBLocalizar.Text = "Ordem de Serviço por Mecânico/Atendente"
                'TXTTitulo.Text = "Mecânico/Atendente:"
                ObjF = Nothing
            Else
                Inicio()
            End If
            BTNPeriodo.Visible = False
            GBPeriodo.Enabled = True
            GBLocalizar.Enabled = True
            BTNOk.Visible = True
            obj = Nothing
        End If
    End Sub

    Private Sub RBPlaca_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RBPlaca.CheckedChanged
        If (RBPlaca.Checked) Then
            Dim obj As New ConsultaPlacasFRM
            obj.Tipo = "ret"
            obj.ShowDialog()
            If (Not IsNothing(obj.ObjP)) Then
                Dim ObjPla As New PlacaBLL
                ObjPla = obj.ObjP
                TXTDescricao.Text = ObjPla.Descricao
                Codigo = ObjPla.Codigo
                
                GBLocalizar.Text = "Ordem de Serviço por Placa"
                'TXTTitulo.Text = "Placa:"
                ObjPla = Nothing
            Else
                Inicio()
            End If
            GBPeriodo.Enabled = True
            BTNPeriodo.Visible = False
            GBLocalizar.Enabled = True
            BTNOk.Visible = True
            obj = Nothing
        End If
    End Sub

    Private Sub RBAbertas_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RBAbertas.CheckedChanged
        If (RBAbertas.Checked) Then
            GBPeriodo.Enabled = True
            GBLocalizar.Enabled = False
            TXTDescricao.Text = ""
            GBLocalizar.Text = ""
            TXTTitulo.Text = ""
            BTNPeriodo.Visible = True

        End If
    End Sub

    Private Sub RBFinalizadas_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RBFinalizadas.CheckedChanged
        If (RBFinalizadas.Checked) Then
            GBPeriodo.Enabled = True
            GBLocalizar.Enabled = False
            TXTDescricao.Text = ""
            GBLocalizar.Text = ""
            TXTTitulo.Text = ""
            BTNPeriodo.Visible = True
        End If
    End Sub

    Private Sub BTNLocalizar_Click(sender As System.Object, e As System.EventArgs) Handles BTNLocalizar.Click
        If (RBCliente.Checked) Then
            RBCliente_CheckedChanged(Nothing, Nothing)
        ElseIf (RBFuncionario.Checked) Then
            RBFuncionario_CheckedChanged(Nothing, Nothing)
        Else
            RBPlaca_CheckedChanged(Nothing, Nothing)
        End If
    End Sub

#Region "Relatorio"
    Public Sub gerarelatrio(titulo As String, formula As String, cliente As String, mecanico As String, datainicial As String, datafinal As String, placa As String, status As String)
        Try
            Dim frmrecursos As New RelatoriosVendaFRM
            Dim rpt As New OrdemServicoREL

            Try
                rpt.SetDatabaseLogon(usuario, senha)
                rpt.SetParameterValue(0, titulo)
                rpt.SetParameterValue(1, cliente)
                rpt.SetParameterValue(2, mecanico)
                rpt.SetParameterValue(3, datainicial)
                rpt.SetParameterValue(4, datafinal)
                rpt.SetParameterValue(5, placa)
                rpt.SetParameterValue(6, status)
                rpt.RecordSelectionFormula = formula
                frmrecursos.CRVRelatorio.ShowGroupTreeButton = False
                frmrecursos.CRVRelatorio.ReportSource = rpt
                frmrecursos.ShowDialog()
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
            frmrecursos.Dispose()
            rpt = Nothing
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Finally

        End Try
    End Sub
#End Region

    Private Sub BTNPeriodo_Click(sender As System.Object, e As System.EventArgs) Handles BTNPeriodo.Click
        Try
            If (DTPInicio.Value.Date > DTPFim.Value.Date) Then Throw New Exception("Data início não pode ser maior que data de fim")
            If RBAbertas.Checked Then gerarelatrio("Relatório de Ordem de Serviço: " & DTPInicio.Value.Date & " até " & DTPFim.Value.Date, "{Ofi_OrdemServico.ord_datainicial} >= DATETIME('" & DTPInicio.Value.ToString("yyyy-MM-dd") & " 00:00:00') and {Ofi_OrdemServico.sta_codigo} <> 5 and {Ofi_OrdemServico.sta_codigo} <> 9 and {Ofi_OrdemServico.sta_codigo} <> 3 or({Ofi_OrdemServico.ord_datafinal}<= DATETIME('" & DTPFim.Value.ToString("yyyy-MM-dd") & " 23:59:59') and ToText({Ofi_OrdemServico.ord_datafinal})='') ", "Todos", "Todos", DTPInicio.Value.ToString("dd/MM/yyyy"), DTPFim.Value.ToString("dd/MM/yyyy"), "Todas", "Abertos")
            If RBFinalizadas.Checked Then gerarelatrio("Relatório de Ordem de Serviço:" & DTPInicio.Value.Date & " até " & DTPFim.Value.Date, "{Ofi_OrdemServico.ord_datainicial} >= DATETIME('" & DTPInicio.Value.ToString("yyyy-MM-dd") & " 00:00:00') and {Ofi_OrdemServico.ord_datafinal}<= DATETIME('" & DTPFim.Value.ToString("yyyy-MM-dd") & " 23:59:59') and {Ofi_OrdemServico.sta_codigo} = 5 or {Ofi_OrdemServico.sta_codigo} = 9", "Todos", "Todos", DTPInicio.Value.ToString("dd/MM/yyyy"), DTPFim.Value.ToString("dd/MM/yyyy"), "Todas", "Finalizados")

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try
    End Sub

    Private Sub BTNOk_Click(sender As System.Object, e As System.EventArgs) Handles BTNOk.Click
        Try
            If RBCliente.Checked Then
                If (Codigo <> 0 Or TXTDescricao.Text <> "") Then
                    gerarelatrio("Relatório de Ordem de Serviço: " & TXTDescricao.Text, "{Ofi_Cliente.cli_codigo} =" & Codigo & " and {Ofi_OrdemServico.ord_datainicial} >= DATETIME('" & DTPInicio.Value.ToString("yyyy-MM-dd") & " 00:00:00') and {Ofi_OrdemServico.ord_datafinal}<= DATETIME('" & DTPFim.Value.ToString("yyyy-MM-dd") & " 23:59:59')", TXTDescricao.Text, "Todos", DTPInicio.Value.ToString("dd/MM/yyyy"), DTPFim.Value.ToString("dd/MM/yyyy"), "Todas", "Todos")
                Else : Throw New Exception("Informe Cliente!")
                End If
            End If
            If RBFuncionario.Checked Then
                If (Codigo <> 0 Or TXTDescricao.Text <> "") Then
                    gerarelatrio("Relatório de Ordem de Serviço: " & TXTDescricao.Text, "{Ofi_Funcionario.fun_codigo} =" & Codigo & " and {Ofi_OrdemServico.ord_datainicial} >= DATETIME('" & DTPInicio.Value.ToString("yyyy-MM-dd") & " 00:00:00') and {Ofi_OrdemServico.ord_datafinal}<= DATETIME('" & DTPFim.Value.ToString("yyyy-MM-dd") & " 23:59:59')", "Todos", TXTDescricao.Text, DTPInicio.Value.ToString("dd/MM/yyyy"), DTPFim.Value.ToString("dd/MM/yyyy"), "Todas", "Todos")
                Else : Throw New Exception("Informe Funcionário!")
                End If
            End If
            If (Codigo <> 0 Or TXTDescricao.Text <> "") Then
                If RBPlaca.Checked Then
                    gerarelatrio("Relatório de Ordem de Serviço: " & TXTDescricao.Text, "{Ofi_Placa.pla_codigo} =" & Codigo & " and {Ofi_OrdemServico.ord_datainicial} >= DATETIME('" & DTPInicio.Value.ToString("yyyy-MM-dd") & " 00:00:00') and {Ofi_OrdemServico.ord_datafinal}<= DATETIME('" & DTPFim.Value.ToString("yyyy-MM-dd") & " 23:59:59')", "Todos", "Todos", DTPInicio.Value.ToString("dd/MM/yyyy"), DTPFim.Value.ToString("dd/MM/yyyy"), TXTDescricao.Text, "Todos")
                Else : Throw New Exception("Informe Placa!")
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try

    End Sub
End Class